package qw

type ErrorResult struct {
	Errcode int    `json:"errcode"`
	Errmsg  string `json:"errmsg"`
}

type Admin struct {
	Userid   string `json:"userid"`
	AuthType int    `json:"auth_type"`
}

type UserSimple struct {
	Userid     string  `json:"userid"`
	Name       string  `json:"name"`
	Department []int64 `json:"department"`
	OpenUserid string  `json:"open_userid"`
}

type User struct {
	Userid         string  `json:"userid"`
	Name           string  `json:"name"`
	Department     []int64 `json:"department"`
	Order          []int64 `json:"order"`
	Position       string  `json:"position"`
	Mobile         string  `json:"mobile"`
	Gender         string  `json:"gender"`
	Email          string  `json:"email"`
	IsLeaderInDept []int64 `json:"is_leader_in_dept"`
	Avatar         string  `json:"avatar"`
	ThumbAvatar    string  `json:"thumb_avatar"`
	Telephone      string  `json:"telephone"`
	Alias          string  `json:"alias"`
	Address        string  `json:"address"`
	OpenUserid     string  `json:"open_userid"`
	MainDepartment int64   `json:"main_department"`
	Extattr        struct {
		Attrs []ExternalAttr `json:"attrs"`
	} `json:"extattr"`
	Status           int             `json:"status"`
	QrCode           string          `json:"qr_code"`
	ExternalPosition string          `json:"external_position"`
	ExternalProfile  ExternalProfile `json:"external_profile"`
}

type ExternalProfile struct {
	ExternalCorpName string `json:"external_corp_name"`
	WechatChannels   struct {
		Nickname string `json:"nickname"`
		Status   int    `json:"status"`
	} `json:"wechat_channels"`
	ExternalAttr []ExternalAttr `json:"external_attr"`
}

type ExternalAttr struct {
	Type int    `json:"type"`
	Name string `json:"name"`
	Text struct {
		Value string `json:"value"`
	} `json:"text,omitempty"`
	Web struct {
		Url   string `json:"url"`
		Title string `json:"title"`
	} `json:"web,omitempty"`
	Miniprogram struct {
		Appid    string `json:"appid"`
		Pagepath string `json:"pagepath"`
		Title    string `json:"title"`
	} `json:"miniprogram,omitempty"`
}

type Department struct {
	Id       int64  `json:"id"`
	Name     string `json:"name"`
	NameEn   string `json:"name_en"`
	Parentid int64  `json:"parentid"`
	Order    int    `json:"order"`
}

type DepartmentId struct {
	Id       int64 `json:"id"`
	Parentid int64 `json:"parentid"`
	Order    int   `json:"order"`
}

type UserId struct {
	UserId     string `json:"userid"`
	Department int64  `json:"department"`
}

type UserAuthResult struct {
	Errcode  int    `json:"errcode"`
	Errmsg   string `json:"errmsg"`
	DeviceId string `json:"DeviceId"`
	// 当用户属于某个企业
	CorpId     string `json:"corpid"`
	UserId     string `json:"userid"`
	UserTicket string `json:"user_ticket"`
	// 若用户不属于任何企业
	OpenId         string `json:"openid"`
	ExternalUserid string `json:"external_userid"`
}

type UserDetailResult struct {
	Errcode int    `json:"errcode"`
	Errmsg  string `json:"errmsg"`
	Corpid  string `json:"corpid"`
	Userid  string `json:"userid"`
	Name    string `json:"name"`
	Gender  string `json:"gender"`
	Avatar  string `json:"avatar"`
	QrCode  string `json:"qr_code"`
	Mobile  string `json:"mobile"`
	Email   string `json:"email"`
	BizMail string `json:"biz_mail"`
	Address string `json:"address"`
}

// ExternalContactDetailResult 外部联系人详情
type ExternalContactDetailResult struct {
	Errcode         int             `json:"errcode"`
	Errmsg          string          `json:"errmsg"`
	ExternalContact ExternalContact `json:"external_contact"`
	FollowUser      []FollowUser    `json:"follow_user"`
	NextCursor      string          `json:"next_cursor"`
}

type ExternalContact struct {
	ExternalUserid  string `json:"external_userid"`
	Name            string `json:"name"`
	Position        string `json:"position"`
	Avatar          string `json:"avatar"`
	CorpName        string `json:"corp_name"`
	CorpFullName    string `json:"corp_full_name"`
	Type            int    `json:"type"`
	Gender          int    `json:"gender"`
	Unionid         string `json:"unionid"`
	ExternalProfile struct {
		ExternalAttr []struct {
			Type int    `json:"type"`
			Name string `json:"name"`
			Text struct {
				Value string `json:"value"`
			} `json:"text,omitempty"`
			Web struct {
				Url   string `json:"url"`
				Title string `json:"title"`
			} `json:"web,omitempty"`
			Miniprogram struct {
				Appid    string `json:"appid"`
				Pagepath string `json:"pagepath"`
				Title    string `json:"title"`
			} `json:"miniprogram,omitempty"`
		} `json:"external_attr"`
	} `json:"external_profile"`
}

type FollowUser struct {
	Userid      string `json:"userid"`
	Remark      string `json:"remark"`
	Description string `json:"description"`
	Createtime  int    `json:"createtime"`
	Tags        []struct {
		GroupName string `json:"group_name"`
		TagName   string `json:"tag_name"`
		TagId     string `json:"tag_id"`
		Type      int    `json:"type"`
	} `json:"tags,omitempty"`
	RemarkCorpName string   `json:"remark_corp_name,omitempty"`
	RemarkMobiles  []string `json:"remark_mobiles,omitempty"`
	OperUserid     string   `json:"oper_userid"`
	AddWay         int      `json:"add_way"`
	State          string   `json:"state,omitempty"`
}

type UserBehaviorData struct {
	StatTime            int64   `json:"stat_time"`
	ChatCnt             int64   `json:"chat_cnt"`
	MessageCnt          int64   `json:"message_cnt"`
	ReplyPercentage     float64 `json:"reply_percentage"`
	AvgReplyTime        int64   `json:"avg_reply_time"`
	NegativeFeedbackCnt int64   `json:"negative_feedback_cnt"`
	NewApplyCnt         int64   `json:"new_apply_cnt"`
	NewContactCnt       int64   `json:"new_contact_cnt"`
}

type TransferCustomerResult struct {
	ExternalUserid string `json:"external_userid"`
	Errcode        int    `json:"errcode"`
	Status         int    `json:"status"`
	TakeoverTime   int64  `json:"takeover_time"`
}

type TagGroup struct {
	GroupId    string    `json:"group_id"`
	GroupName  string    `json:"group_name"`
	CreateTime int       `json:"create_time"`
	Order      int       `json:"order"`
	Deleted    bool      `json:"deleted"`
	Tag        []TagItem `json:"tag"`
}

type TagItem struct {
	Id         string `json:"id"`
	Name       string `json:"name"`
	CreateTime int    `json:"create_time"`
	Order      int    `json:"order"`
	Deleted    bool   `json:"deleted"`
}
